草庐IT

c++ - 对 boost::timer::auto_cpu_timer 的 undefined reference

全部标签

使用多个编译器编译 C 代码

我最近才决定学习C。我注意到我可以下载多个编译器。如果我为一个编译器编写C代码,它应该适用于所有编译器,对吗? 最佳答案 简短回答:是长答案:是的,但前提是(且不限于):您的代码不使用其他编译器不可用的编译器特定内容您的代码所依赖的库可用并在其他编译器上正确设置您的代码不调用/依赖未定义或实现定义的行为其他编译器使用与您当前的编译器大致相同的C标准进行编译。我会在想到的时候添加更多到列表中。 关于使用多个编译器编译C代码,我们在StackOverflow上找到一个类似的问题:

c# - 如何从 C# 系统托盘应用程序将 C 程序作为线程运行?

我有一个C控制台应用程序,它曾经在Windows的CMD终端中的前台运行,并接受用户击键输入。但是,现在需要将其移至后台并且不需要用户输入。我已经创建了一个系统托盘,它是通过右键单击退出和右键单击关于来正确实现的。并有一个执行该功能的终端程序。我不想再次重写程序,而是希望能够创建一个线程来调用我现有程序中不需要终端的函数。只是为了强调这一点,控制台交互方面已从代码中删除,应用程序对击键的响应等也已从代码中删除。希望这能稍微澄清一些事情。问题:这可能吗?我将如何实现?(我通常不是使用更多嵌入式C的PC程序员,所以.NET对我来说很陌生。非常感谢任何帮助) 最佳

c++ - 如何从 Windows 中的 session ID 获取用户名/SID?

我想从sessionID值中获取用户名或SID,如何使用WinAPI在WindowXP中执行此操作? 最佳答案 您可以使用WTSQuerySessionInformationfunction从WTS_INFO_CLASS获取用户名和域(WTSUserName和WTSDomainName)。此功能早在Windows2000就可用。 关于c++-如何从Windows中的sessionID获取用户名/SID?,我们在StackOverflow上找到一个类似的问题:

c - NtDll是否真的导出C运行时函数,并且可以在我的应用程序中使用它们吗?

我在Windows10计算机上查看了NtDll导出表,发现它导出了标准的C运行时函数,例如memcpy,sprintf,strlen等。这是否意味着我可以在运行时通过LoadLibrary和GetProcAddress动态调用它们?是否可以保证每个Windows版本都适用?如果是这样,可以完全删除C运行时库(仅使用NtDll中的CRT函数),从而使我的程序更小? 最佳答案 绝对没有理由调用这些由NtDll导出的未记录的函数。Windows将所有必需的C运行时函数导出为标准系统库(即Kernel32)中记录的包装器。如果您绝对不能链接

c - 为什么当前目录改变

调用GetOpenFileName后,进程的当前目录更改为GetOpenFileName打开文件的目录。如何保留默认的当前目录? 最佳答案 HowcanIkeepthedefaultcurrentdirectoryinstead?如果您阅读OPENFILENAMEdocumentation,有一个OFN_NOCHANGEDIR标志用于这个确切的目的:Restoresthecurrentdirectorytoitsoriginalvalueiftheuserchangedthedirectorywhilesearchingforfil

c - 在 C 中读取 Unicode 文件并通过套接字将内容作为 ASCII 传递

我一直在努力解决这个问题,但似乎没有任何效果。我们有一个应用程序它使用普通的“fopenfgets等”读取数以千计的交易文件,我们使用普通的C函数“strstr、strchr等”解析这些文件并返回规范化的char*。但是,现在我们需要读取一些Unicode格式的文件(从Windows),我遇到了很多麻烦。从我的工作来看,我只收到一个FP(文件指针),不知道FP是指向普通的ascii文件还是Unicode,我需要将其作为char*发送回应用程序。我也无法运行命令行工具来手动转换整个文件,因为我们正在为新条目拖尾。我尝试使用WideCharToMultiByte、mbsrtowcs,但似乎

c++ - 在不创建新进程的情况下在另一个进程中运行可执行文件

我想编写一个程序来运行可执行镜像而不创建新进程...我想这样做是因为我想使用plink将密码发送到远程ssh服务器...plink程序发送命令行中提供的密码。如果我使用fork和exec函数,有人可以使用进程资源管理器或ps-aef或cat/proc//cmdline查看命令行中提供的密码。如何避免这个安全漏洞..而且这个程序必须在linux和windows上运行.. 最佳答案 将SSH服务器设置为使用RSA公钥/私钥身份验证而不是密码。一般来说,这通常是SSH的更好选择。参见http://www.google.com/search

.net - 从 native C 调用 .NET 托管代码

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。我需要能够从nativeC调用DLL中的.NET3.5托管代码。我没有获得.h或.lib文件。我已经尝试制作C++DLL来公开与C兼容的接口(interface),但我似乎无法包含我需要在我的项目中使用的DLL。有什么方法可以从nativeC调用.NET托管代码吗?

c++ - 我的程序找不到boost库

我尝试编写作为Boost测试库示例的代码:#includeBOOST_AUTO_TEST_CASE(test){BOOST_CHECK(true);}我构建了源码,得到了执行文件test.exe。我尝试执行该文件,但收到一条错误消息。Theprogramcan'tstartbecauseboost_unit_test_framework-vc80-mt-1_44.dllismissingfromyourcomputer.Tryreinstallingtheprogramtofixthisproblem.但是,我已经在我的boost库目录中准备好该文件。这个案例有什么问题?背景:对于我的

c - 如何将#defined 字符串插入到 system() 命令中? (win32)

这是我正在尝试做的事情的一个过于简化的版本:#defineLOGDIRECTORYC:\\logs\\system("mkdirLOGDIRECTORY");但是预处理器不是换出定义的名称。相反,系统命令实际上认为LOGDIRECTORY是名称,因此在启动程序时会出现错误。我知道这是错误的,我一定可以用"标记或其他字符来指定我想要的东西,但我想不通。我不想对目录和文件名进行硬编码,因为将来有人可能想要更改它们,并且更改定义比更改整个函数等要容易得多。附言,我用纯C编写代码。 最佳答案 #defineLOGDIRECTORYC:\\l